This written description is in the field of migration of a guest from one server to another. More particularly, the description relates to transferring memory of the guest over a storage area network.
Many different types of computing systems have attained widespread use around the world. These computing systems include personal computers, servers, mainframes and a wide variety of stand-alone and embedded computing devices. Sprawling client-server systems exist, with applications and information spread across many PC networks, mainframes and minicomputers. In a distributed system connected by networks, a user may access many application programs, databases, network systems, operating systems and mainframe applications. Computers provide individuals and businesses with a host of software applications including word processing, spreadsheet, and accounting. Further, networks enable high speed communication between people in diverse locations by way of e-mail, websites, instant messaging, and web-conferencing.
A common architecture for high performance, single-chip microprocessors is the reduced instruction set computer (RISC) architecture characterized by a small simplified set of frequently used instructions for rapid execution. Thus, in a RISC architecture, a complex instruction comprises a small set of simple instructions that are executed in steps very rapidly. These steps are performed in execution units adapted to execute specific simple instructions. In a superscalar architecture, these execution units typically comprise load/store units, integer Arithmetic/Logic Units, floating point Arithmetic/Logic Units, and Graphical Logic Units that operate in parallel. In a processor architecture, an operating system controls operation of the processor and components peripheral to the processor. Executable application programs are stored in a computer's hard drive. The computer's processor causes application programs to run in response to user inputs.
Thus, in a modern system, a plurality of computers—including servers—are connected together through a network. Each computer may run application programs for performing certain functions. These application programs may include word-processing, e-mail, graphics, document viewing and mark-up, spreadsheet, database, music player, internet browser, photo-shop, games, anti-virus, as well as a host of other application programs too numerous to mention.
Servers are provided to connect a plurality of computers to the Internet or an intranet. Each server in a network may be logically partitioned into a plurality of virtual clients or guests which may act and appear to a computer connected to the server as if the virtual client is itself a server. A guest may be an executing operating system and possibly additionally an application program such as a database. Each guest or virtual client may have access to memory internal to the server and external to the server such as in a Storage Area Network (SAN). To provide this access a Hypervisor (HYP) controls access of each guest or virtual client to the physical storage.
In many systems, there will be multiple servers connected together and to a computer communications network and to a storage area network. Multiple servers can serve more users on the network. Moreover each server can host different functions. Multiple servers may communicate to each other and to user computers over a network typically connected by Ethernet cable and network processors. Thus, in a typical system, many servers are connected with each other and to other computers on a computer communications network, and are also connected to each other on a storage area network (SAN).
The computer communications network is typically an Ethernet channel. The Ethernet network is a primary means by which servers communicate with computers in the network. The SAN typically comprises a fiber channel or other high bandwidth channel. Servers may be found in groups with as many as thousands of servers in a group. In such a group, there are storage servers and there are “computing” servers. Storage servers comprise multiple hard disks and mediate access to the memory on its hard disks. Computing servers are the other non-storage servers in the network such as those that provide access to their files over the Ethernet in response to requests from computers in the network.
In many systems, it is desirable and necessary to transfer operation of a guest from one computing server to another. A guest is an entity executing within a logical partition on a server that comprises at least an operating system and possibly application programs. One may wish to make the transfer due to maintenance on the first server or to balance the computing load between servers. To transfer operation of the guest from a first server to a second server, one must transfer the memory of the guest from the first server to the second server, suspend operation of the guest on the first server, and commence operation of the guest on the second server. Typically, migration of the memory of the guest from a partition of one server to a partition of another server occurs over the Ethernet using TCP/IP (Transmission Control Protocol/Internet Protocol). The time to accomplish this migration can be very long because of the relatively slow speed of the Ethernet and the large processing overhead time required to process the TCP/IP protocol.